package ar.com.tesis.mobile.activities;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;

import com.pnikosis.materialishprogress.ProgressWheel;

import java.util.List;

import ar.com.tesis.mobile.R;
import ar.com.tesis.mobile.adapters.PuntoDeInteresAdapter;
import ar.com.tesis.mobile.model.PuntoDeInteres;
import ar.com.tesis.mobile.tareas.GetPuntosDeInteres;

public class ActividadPuntoDeInteres extends ActividadBasica {

    private PuntoDeInteresAdapter adapter;
    private ListView listViewPuntosDeInteres;
    private ProgressWheel barraProgreso;
    private TextView mensajeBarraDeProgreso;
    public static final String PDI = "PDI";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (obtenerUsuarioActual()==null){

            irARegistracion();
        } else {

            cargarPantallaPuntosDeInteres();
        }
    }

    private void cargarPantallaPuntosDeInteres() {
        setContentView(R.layout.actividad_punto_de_interes);

        listViewPuntosDeInteres = (ListView) findViewById(R.id.lista_puntos_de_interes);
        adapter = new PuntoDeInteresAdapter(this);

        listViewPuntosDeInteres.setAdapter(adapter);

        listViewPuntosDeInteres.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                PuntoDeInteres pdi = adapter.getItem(position);

                Intent intent = new Intent(ActividadPuntoDeInteres.this, ActividadDetallePuntoDeInteres.class);
                intent.putExtra(PDI, pdi);
                startActivity(intent);
            }
        });

        setBotonReintentar();

        barraProgreso = (ProgressWheel) findViewById(R.id.puntos_de_interes_progressBar);
        mensajeBarraDeProgreso = (TextView) findViewById(R.id.puntos_de_interes_progressBar_mensaje);

        setearFuentesLayoutDesconexion();
        getPuntosDeInteres();
        setTitle(getString(R.string.titulo_activity_pdi) + "- UNTREF");
    }

    private void irARegistracion() {
        Intent intent = new Intent(getApplicationContext(), ActividadRegistracion.class);
        startActivity(intent);
        finish();
    }

    private void getPuntosDeInteres() {

        if (estaConectado()) {

            mostrarBarraProgreso(true, this.barraProgreso, mensajeBarraDeProgreso);
            GetPuntosDeInteres tarea = new GetPuntosDeInteres(this);
            tarea.execute();
        } else {

            mostrarLayoutDesconexion();
        }
    }

    public void puntosDeInteresObtenidosCallback(List<PuntoDeInteres> puntoDeIntereses) {

        mostrarBarraProgreso(false, this.barraProgreso, mensajeBarraDeProgreso);
        this.adapter.setPuntosDeInteres(puntoDeIntereses);
    }

    public void puntosDeInteresFalloCallback() {

        mostrarLayoutDesconexion();
    }

    @Override
    public void reintentarCallback() {

        mostrarPantallaDesconexion(false);
        mostrarBarraProgreso(true, barraProgreso, mensajeBarraDeProgreso);
        getPuntosDeInteres();
    }

    private void mostrarLayoutDesconexion(){

        mostrarBarraProgreso(false, this.barraProgreso, mensajeBarraDeProgreso);
        mostrarPantallaDesconexion(true);
    }

    public void mostrarPantallaDesconexion(boolean mostrar){

        findViewById(R.id.lista_puntos_de_interes).setVisibility(mostrar? View.GONE : View.VISIBLE);
        findViewById(R.id.layout_desconexion).setVisibility(mostrar ? View.VISIBLE : View.GONE);
    }
}
